function listarGrupos() {
    try {
        containerPrincipal.insert('listagem_recurso', 'grupo.html', function() {
            $("#principal_content_title").html("Listagem de Grupo");
        });
        containerPrincipal.select('listagem_recurso');
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}

function consultarGrupo(cod_grupo) {
    try {
        $("#progress").show();
        $.ajax({
            type: "POST",
            url : "../controllers/GrupoController.php",
            data : {
                cod_grupo : cod_grupo,
                acao : 'consultar'
            },
            success: function(msg){
                try {
                    if (!(msg instanceof XMLDocument)) {
                        msg = msg.replace("Exception: ", "");
                        showMessage(ERROR_MESSAGE, msg);
                        return;
                    }
                    var grupo = $(msg).find('grupo');
                    cod_grupo_consulta = grupo.find('cod_grupo').text();
                    containerPrincipal.insert('consulta_recurso', 'consulta/grupo.html', function() {
                        $("#descricao_consulta").html(grupo.find('descricao').text());
                        listarUsuarios();
                        listarPermissoes();
                        $('#descricao_consulta').editable( '../controllers/GrupoController.php', {
                            "callback": function( sValue, y ) {
                                if (sValue.indexOf("Exception: ") != -1) {
                                    var message = sValue.replace("Exception: ", "");
                                    message = message.substring(0, message.indexOf("|"));
                                    showMessage(ERROR_MESSAGE, message);
                                    sValue = sValue.substring(sValue.indexOf("|") + 1, sValue.length);
                                } else {
                                    containerPrincipal.insert('listagem_recurso', 'grupo.html', null);
                                }
                            //var aPos = tabela_grupo.fnGetPosition( this );
                            //tabela_grupo.fnUpdate( sValue, aPos[0], aPos[1] );
                            },
                            "submitdata": function ( value, settings ) {
                                return {
                                    "row_id": cod_grupo_consulta,
                                    "acao" : "alterar"
                                };
                            },
                            "height": "25px"
                        } );
                    });
                    containerPrincipal.select('consulta_recurso');
                    $("#progress").hide();
                } catch(e) {
                    reportCrash(null, e.name, e.stack);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $("#progress").hide();
                reportCrash(XMLHttpRequest, textStatus, errorThrown);
            }
        });
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}

function manutencaoGrupo(acao, cod_grupo) {
    try {
        $("#progress").show();
        var descricao;
        if (acao == 'cadastrar') {
            descricao = $("#descricao_cadastrar").val();
            if (descricao == '') {
                showMessage(ERROR_MESSAGE, 'Descrição inválida!');
                return;
            }
        }
        $.ajax({
            type: "POST",
            url : "../controllers/GrupoController.php",
            data : {
                cod_grupo : cod_grupo,
                descricao : descricao,
                acao : acao
            },
            success: function(msg){
                try {
                    $("#progress").hide();
                    if (msg.indexOf("Exception: ") != -1) {
                        msg = msg.replace("Exception: ", "");
                        showMessage(ERROR_MESSAGE, msg);
                        return;
                    }
                    if (acao == 'cadastrar') {
                        listarGrupos();
                    } else if (acao == 'excluir') {
                        var botao = $('#' +cod_grupo).children("td:first");
                        tabela_grupo.fnDeleteRow( tabela_grupo.fnGetPosition(botao[0])[0]);
                    }
                    $("#recurso").dialog('close');
                } catch(e) {
                    reportCrash(null, e.name, e.stack);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $("#progress").hide();
                reportCrash(XMLHttpRequest, textStatus, errorThrown);
            }
        });
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}